package com.weipt.lambda;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

/**
 * @program: Learning
 * @description:
 * @Company: 终生学习
 * @author: peter.wei
 * @create: 2020-06-12 10:02
 **/
public class test1 {
    public static void main(String[] args) {
        testSort();
    }

    public static void testSort(){
        List<String> list = new ArrayList<>();
        Collections.addAll(list,"1","wei","魏");
        System.out.println(list);
        //List<String> collect = list.stream().sorted((a, b)->a.compareTo(b)).collect(Collectors.toList());
        //List<String> collect = list.stream().sorted().collect(Collectors.toList());
        list.sort((e1, e2) -> e2.compareTo(e1));
        list.removeIf(e -> e.endsWith(".m"));


        /**
        传统for循环运行时间:21058ms
        stream : 20315ms
        parallelStream : 2441ms
        对比发现parallelStream执行效率要比传统的for循环和stream要快的多，

        那么什么时候要用stream或者parallelStream呢？可以从以下三点入手考虑
        是否需要并行？  
        任务之间是否是独立的？是否会引起任何竞态条件？  
        结果是否取决于任务的调用顺序？*/

        //list.parallelStream().filter(ele -> ele.length() > 2).forEach(System.out::println);
        list.stream().filter(ele -> ele.length() > 2).forEach(System.out::println);
        System.out.println(list);

    }

}